#ifndef MAPAABSTRACTO_H
#define MAPAABSTRACTO_H

#include "imapa.h"
#include "texturadefondo.h"
#include "math3d.h"
#include "ray_cyl.h"
#include "Mapa.h"
#include "Territorio.h"
#include "mutex.h"
using namespace ui::ejemplo;
namespace ui {
namespace tablero {
namespace mapa {

class MapaAbstracto: public IMapa {

public:

	MapaAbstracto(TexturaDeFondo &p_TexturaDeFondo, Mapa *p_Mapa);
	~MapaAbstracto();

	virtual Territorio *getTerritorioSeleccionado();
	virtual void setTerritorioSeleccionado(Territorio *p_pTerritorio);
	virtual void dibujar();

protected:
	red::hilos::thread::Mutex dibujar_Mutex;
	
	double m_fMouseX;
	double m_fMouseY;
	TexturaDeFondo &m_TexturaDeFondo;
	int m_iAncho, m_iAltura;
	Territorio *m_pTerritorioSeleccionado;
	Mapa *m_Mapa;
	red::hilos::thread::Mutex m_Mapa_mutex;
	virtual void dibujarPlaneta() = 0;
	virtual void dibujarCiudades() = 0;

	void escribir(float z, float x, float y, string s);
	void seleccionarColorDelTerritorio(Territorio &p_Territorio);
};

}
}
}

#endif
